Content dependency verification for a gaming machine

ABSTRACT

A system, apparatus and method for dependency verification of content distributed to a gaming machine is described herein. In some embodiments, a method includes receiving, over a network and into a gaming machine, data that includes a software component. The method also includes verifying that the gaming machine includes the version or the range of versions of a component, upon determining that the software component is dependent on a version or a range of versions of the component that is part of the gaming machine.

RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No.11/995,764, filed on Jan. 15, 2008, which is a U.S. National StageFiling under 35 U.S.C. 371 from International Patent Application SerialNo. PCT/US2006/027935, filed Jul. 18, 2006, and published on Jan. 25,2007 as WO 2007/011971 A2 and republished as WO 2007/011971 A3, whichclaims the priority benefit of U.S. Provisional Application Ser. No.60/700,153 filed Jul. 18, 2005, the contents of which are incorporatedherein by reference in their entireties.

COPYRIGHT

A portion of the disclosure of this patent document contains material towhich the claim of copyright protection is made. The copyright owner hasno objection to the facsimile reproduction by any person of the patentdocument or the patent disclosure, as it appears in the U.S. Patent andTrademark Office file or records, but reserves all other rightswhatsoever. Copyright 2006, WMS Gaming, Inc.

BACKGROUND

1. Field

This invention relates generally to the field of network communicationsand more particularly to the field of communications over a network witha gaming machine.

2. Description of Related Art

Wagering game makers continually provide new and entertaining games. Oneway of increasing entertainment value associated with casino-stylewagering games (e.g., video slots, video poker, video black jack, andthe like) includes offering a base game and a variety of bonus events.However, despite the variety of bonus events, players often loseinterest in repetitive gaming content. In order to maintain playerinterest, wagering game machine makers frequently update game themes,game settings, bonus events, and other gaming content.

In order to satisfy player demands, gaming machine operatorscontinuously license and deploy new gaming content to gaming machinesoperating in the field. Gaming machine operators typically update gamingcontent by manually delivering updated gaming content to each gamingmachine. For example, when a gaming machine's gaming content becomesundesirable or a license expires, an operator typically replacesexisting media (e.g. ROM, CD-ROM, or flash RAM) with new mediacontaining updated gaming and licensing content. For gaming machineoperators owning scores of machines, this process can be laborious andexpensive.

SUMMARY

A system, apparatus and method for dependency verification of contentdistributed to a gaming machine is described herein. In someembodiments, a method includes receiving, over a network and into agaming machine, data that includes a software component. The method alsoincludes verifying that the gaming machine includes the version or therange of versions of a component, upon determining that the softwarecomponent is dependent on a version or a range of versions of thecomponent that is part of the gaming machine.

In some embodiments, a method includes receiving a data package thatincludes a software component and a list of one or more dependencies onwhich the software component is dependent. The method also includesauthenticating the data package. The method includes verifying that thegaming machine includes the one or more dependencies.

In some embodiments, an apparatus includes a machine-readable mediumthat includes a quarantined storage. The apparatus includes a downloadmodule to receive, over a network, a data package that includes asoftware component and a list of a version of one or more dependencieson which the software component is dependent. The download module is tostore the data package in the quarantined storage. The apparatus alsoincludes an authentication module to authenticate the data package. Theapparatus includes a version manager module to verify that the apparatusincludes the version of the one or more dependencies, The apparatus alsoincludes an install module to install the software component on theapparatus, if the data package is authentic.

BRIEF DESCRIPTION OF THE FIGURES

The present invention is illustrated by way of example and notlimitation in the Figures of the accompanying drawings in which:

FIG. 1 is a block diagram illustrating a system for dependencyverification for distributed gaming content, according to someembodiments of the invention.

FIG. 2 illustrates a more detailed block diagram of parts of a computersystem that includes dependency verification for distributed gamingcontent, according to some embodiments of the invention.

FIG. 3 illustrates amore detailed block diagram of a data package usedfor gaming content distribution, according to some embodiments of theinvention.

FIG. 4 illustrates a data structure of installed software stored in thegaming machine, according to some embodiments of the invention.

FIG. 5 illustrates a computer device that executes software forperforming operations related to dependency verification, according tosome embodiments of the invention.

FIG. 6 is a perspective view of a gaming machine, according to someembodiments of the invention.

FIG. 7 illustrates a flow diagram for operations for distributing a datapackage that includes dependency verification, according to someembodiments of the invention.

FIG. 8 illustrates a flow diagram for dependency verification fordistributed gaming content, according to some embodiments of theinvention.

FIG. 9 illustrates a flow diagram for dependency verification fordistributed gaming content for data packages having multiple softwarecomponents, according to some embodiments of the invention.

FIG. 10 illustrates a flow diagram for updating software components in agaming machine based on player input, according to some embodiments ofthe invention.

FIG. 11 illustrates a flow diagram for verification of hardware in thegaming machine prior to downloading of updates thereto, according tosome embodiments of the invention.

DESCRIPTION OF THE EMBODIMENTS

Systems, apparatus and methods for dependency verification fordistributed gaming content are described herein. This description of theembodiments is divided into five sections. The first section describesan example operating environment and system architecture, The thirdsection describes example operations. The fourth section provides sonicgeneral comments.

Hardware, Operating Environment, and System Architecture

This section provides an example system architecture in whichembodiments of the invention can be practiced. This section alsodescribes an example computer system and gaming machine. Operations ofthe system components will be described in the next section.

Example System Architecture

FIG. 1 is a block diagram illustrating a system for dependencyverification for distributed gaming content, according to someembodiments of the invention. As shown in FIG. 1, a system 100 includesa master game server 102 which is connected to gaming and licensingcontent store 104. The master game server 102 is also connected to anetwork 106, which is connected to a pair of download managers 108. Eachdownload manager 108 is connected to an administrator terminal 112 andpair of gaming machines 110.

The gaming and licensing content store 104 includes gaming content andlicensing content. The gaming content can include instructions and/ordata used for conducting casino style wagering games (e.g., video slots,video poker, video black jack, and the like). In some embodiments, thegaming content may include program code, audio content, video content,and/or other data used for conducting all or part of a casino styleslots game and/or bonus events.

The licensing content may include data and/or instructions for enforcinga license for using gaming content. In some embodiments, the licensingcontent may be used to enforce any suitable licensing model.

In some embodiments, the master game server 102 distributes gaming andlicensing content to the download managers 108. The download managers108 may manage delivery of the gaming and licensing content to thegaming machines 110. In some embodiments, the master game server 202distributes gaining and licensing content using one or more datapackages, as described in greater detail below (see System Operationssection).

In some embodiments, each gaming machine 110 serves as a thin client toa download manager 108 or other computer system. As a thin client, eachgaming machine 110 includes logic for presenting and receiving gaminginformation, while logic for conducting games is disposed within thedownload manager 108 or other computer system (not shown). In anotherembodiment, the gaming machine 110 includes all logic for presenting andreceiving gaming information and for conducting a game. The gainingmachines 110 may be embodied in any suitable computing device, such as adesktop computer, laptop computer, or personal digital assistant.

The components of the system 100 may be connected using any suitableconnection technology. For example, the components can be connected viaRS-232, Ethernet, 802,11, public switched telephone networks, DSL, orany other connection technology. The network 120 may be a local areanetwork or wide-area network and can transmit licensing and gamingcontent using any suitable communication protocols. The administratorterminals 112 may be used for configuring and accessing licensing andgaining content stored in the download managers 108.

While FIG. 1 describes a system for dependency verification fordistributed gaming content, FIG. 2 illustrates parts of a gamingmachine. FIG. 3 illustrates a data package that is transmitted betweenthe master game server and the gaming machine FIG. 4 illustrates a tablethat may be stored on the gaming machine and used as part of thedependency verification. FIG. 5 illustrates a computer that may berepresentative of a master game server or a gaming machine.

Example Wireless Environment

In some embodiments, at least part of the communications in the system100 of FIG. 1 may be wireless. For example, communication between themaster game server 102 and the gaming and licensing content store 104may be wireless. Alternatively or in addition, communication between themaster game server 102 and the network 106. Alternatively or inaddition, communication between the network 106 and the gaming machine110, the administrator terminals 112 or the download managers 108 may bewireless. While the following description is relative to communicationbetween a wireless access point on the network 106 and a gaming machine110, such description is applicable to any of the wirelesscommunications in the system 100.

In some embodiments, a wireless access point in the network 106 and thegaming machines 110 can communicate orthogonal frequency divisionmultiplexed (OFDM) communication signals over a multicarriercommunication channel. The multicarrier communication channel can bewithin a predetermined frequency spectrum and can comprise a pluralityof orthogonal subcarriers. In some embodiments, the multicarrier signalscan be defined by closely spaced OFDM subcarriers. Each subcarrier canhave a null at substantially a center frequency of the other subcarriersand/or each subcarrier can have an integer number of cycles within asymbol period. In some embodiments, the wireless access point and gamingmachines 110 can communicate in accordance with a broadband multipleaccess technique, such as orthogonal frequency division multiple access(OFDMA), In some embodiments, the wireless access point and gamingmachines 110 can communicate using spread-spectrum signals.

In some embodiments, the wireless access point can be part of acommunication station, such as wireless local area network (WLAN)communication station including a Wireless Fidelity (Win) communicationstation, or a WLAN access point (AP). In these embodiments, the gamingmachines 110 can be part of a mobile station, such as WLAN mobilestation or a Win mobile station.

In some other embodiments, the wireless access point can be part of abroadband wireless access (BWA) network communication station, such as aWorldwide Interoperability for Microwave Access (WiMax) communicationstation, as the wireless access point can be part of almost any wirelesscommunication device. In these embodiments, the gaming machines 110 canbe part of a BWA network communication station, such as a WiMaxcommunication station.

In some embodiments, any of the gaming machines 110 can part of aportable wireless communication device, such as a personal digitalassistant (PDA), a laptop or portable computer with wirelesscommunication capability, a web tablet, a wireless telephone, a wirelessheadset, a pager, an instant messaging device, a digital camera, atelevision, a medical device (e.g., a heart rate monitor, a bloodpressure monitor, etc,), or other device that can receive and/ortransmit information wirelessly.

In some embodiments, the frequency spectrums for the communicationsignals transmitted and received by the wireless access point and thegaming machines 110 can comprise either a 5 gigahertz (GHz) frequencyspectrum or a 2.4 GHz frequency spectrum. In these embodiments, the 5(kHz frequency spectrum can include frequencies ranging fromapproximately 4.9 to 5.9 GHz, and the 2.4 GHz spectrum can includefrequencies ranging from approximately 2.3 to 2.5 GHz, but otherfrequency spectrums are also equally suitable. In some BWA networkembodiments, the frequency spectrum for the communication signals cancomprise frequencies between 2 and 11 GHz.

In some embodiments, the wireless access point and the gaming machines110 can communicate RF signals in accordance with specific communicationstandards, such as the Institute of Electrical and Electronics Engineers(IEEE) standards including IEEE 802.11(a), 802,11(b), 802.11(g),802.11(h) and/or 802.11(n) standards and/or proposed specifications forwireless local area. networks, but they can also be suitable to transmitand/or receive communications in accordance with other techniques andstandards. In some BWA network embodiments, the wireless access pointand the gaming machines 110 can communicate RF signals in accordancewith the IEEE 802.16-2004 and the IEEE 802.16(e) standards for wirelessmetropolitan area networks (WMANs) including variations and evolutionsthereof. However, they can also be suitable to transmit and/or receivecommunications in accordance with other techniques and standards, Formore information with respect to the IEEE 802.11 and IEEE 802.16standards, please refer to “IEEE Standards for InformationTechnology—Telecommunications and Information Exchange betweenSystems”—Local Area Networks—Specific Requirements—Part 11 “Wireless LANMedium Access Control (MAC) and Physical Layer (PHY), ISO/IEC 8802-11:1999”, and Metropolitan Area Networks—Specific Requirements Part 16:“Air Interface for Fixed Broadband Wireless Access Systems,” Can 2005and related amendments/versions.

In some embodiments, the wireless access point and the gaming machines110 can include one or more antennas (not shown). These antennas cancomprise directional or omnidirectional antennas, including, forexample, dipole antennas, monopole antennas, patch antennas, loopantennas, microstrip antennas or other types of antennas suitable fortransmission of the RF signals. In some multiple-input, multiple-output(MIMO) embodiments, two or more antennas can be used. In someembodiments, instead of two or more antennas, a single antenna withmultiple apertures can be used. In these multiple aperture embodiments,each aperture can be considered a separate antenna. In sonicmulti-antenna embodiments, each antenna can be effectively separated totake advantage of spatial diversity and the different channelcharacteristics that can result between each of the antennas and anotherwireless communication device. In some multi-antenna embodiments, theantennas of a device can be separated by up to 1/10 of a wavelength ormore.

In some embodiments, handoffs between different wireless access pointsand one of the gaining machines 110 can be performed based on asignal-to-noise ratio (SNR), a signal-to-noise and interference ratio(SNIR), a bit-error rate (BER), or an energy per received bit.

In some embodiments, the wireless access point and the gaming machines110 can communicate in accordance with standards such as thePan-European mobile system standard referred to as the Global System forMobile Communications (GSM). In some embodiments, the wireless accesspoint and the gaming machines 110 can also communicate in accordancewith packet radio services such as the General Packet Radio Service(GPRS) packet data communication service. In some embodiments, thewireless access point and the gaming machines 110 can communicate inaccordance with the Universal Mobile Telephone System (UNITS) for thenext generation of GSM, which can, for example, implement communicationtechniques in accordance with 2.5G and third generation (3G) wirelessstandards (See 3GPP Technical Specification, Version 3.2.0, March 2000).In some of these embodiments, the wireless access point and the gamingmachines 110 can provide packet data services (PDS) utilizing packetdata protocols (PDP). In other embodiments, the wireless access pointand the gaming machines 110 can communicate in accordance with otherstandards or other air-interfaces including interfaces compatible withthe enhanced data for GSM evolution (EDGE) standards (see 3GPP TechnicalSpecification, Version 3.2.0, March 2000).

In other embodiments, the wireless access point and the gaming machines110 can communicate in accordance with a short-range wireless standard,such as the Bluetooth™ short-range digital communication protocol.Bluetooth™ wireless technology is a de facto standard, as well as aspecification for small-form factor, low-cost, short-range radio linksbetween mobile PCs, mobile phones and other portable devices. (Bluetoothis a trademark owned by Bluetooth SIG, Inc.) In other embodiments, thewireless access point and the gaming machines 110 can communicate inaccordance with an ultra-wideband (UWB) communication technique where acarrier frequency is not used. In other embodiments, the wireless accesspoint and the gaming machines 110 can communicate in accordance with ananalog communication technique. In other embodiments, the wirelessaccess point and the gaming machines 110 can communicate in accordancewith an optical communication technique, such as the Infrared DataAssociation (IrDA) standard, In some embodiments, the wireless accesspoint and the gaming machines 110 can communicate in accordance with theHome-RF standard which can be in accordance with a Home-RF Working Group(HRFWG) standard.

Example Computer System and Gaming Machine

FIG. 2 illustrates a more detailed block diagram of parts of a systemthat includes dependency verification for distributed gaming content,according to some embodiments of the invention. As illustrated in FIG.2, a system 200 includes a download module 202, an authentication module204, a version manager module 206, an install module 207 and a storagedevice 208, which are coupled together. The storage device 208 may berepresentative of any type of volatile and/or non-volatile storage. Forexample, the storage device 208 may be different types of hard diskdrives, different types of memory (e.g., Static Random Access Memory(SRAM), Dynamic Random Access Memory (DRAM), etc.), etc.

The storage device 208 stores a table of software 210. The storagedevice 208 also includes a quarantined storage 212. The quarantinedstorage 212 includes data packages 214A-214N. The data packages214A-214N are representative of the data packages received from themaster game server 202. An exemplary embodiment of one of the datapackages 214A-214N is illustrated in FIG. 3, which is described in moredetail below. In some embodiments, the quarantined storage 212 may be asection of storage in the storage device 208 that has limitedaccessibility. For example, in some embodiments, only the downloadmodule 202, the authentication module 204, the version manager module206 and the install module 207 may access this section of storage. Insome embodiments, the quarantined storage 212 is configured such that noexecutables stored therein may be executed.

The table of software 210 may be any type of data structure including alist, table, object, data array, etc. The table of software 210 mayinclude a list of the identifications of software installed and/orstored on the gaming machine 110. The table of software 210 may alsoinclude the versions of the software and date of installation/storage onthe gaming machine 110. An exemplary embodiment of the table of software210 is illustrated in FIG. 4, which is described in more detail below.

The download module 202, the authentication module 204 and the versionmanager module 206 may be representative of software, hardware, firmwareor a combination thereof. For example, the download module 202, theauthentication module 204, the version manager module 206 and theinstall module 207 may be software to be executed on a processor (notshown). The operations of the download module 202, the authenticationmodule 204, the version manager module 206 and the install module 207are described in more detail below (see System Operations section).

FIG. 3 illustrates a more detailed block diagram of a data package usedfor software component distribution, according to some embodiments ofthe invention. The data package 300 may be representative of the datatransmitted from the master game server 102 to one of the gamingmachines 110. The data package 300 may include any number of softwarecomponents 302A-302N. The software components 302A-302N may berepresentative of a new game application that may be executed on thegaming machine 110. In some embodiments, the software components302A-302N may be representative of a new application to be executed onone of the peripherals (e.g., a printer) of the gaming machine 110. Insome embodiments, the software components 302A-302N may berepresentative of a patch to existing instructions that are executableon the gaming machine 110 or one or more peripherals of the gamingmachine 110. The software components 302A-302N may also berepresentative of a new file or replacement of an existing filed (e.g.,anew library file) on the gaming machine 110 or one or more peripheralsof the gaming machine 110. The software component may be related to thevideo or audio of the gaming machine 110 (e.g., a new video plug-in).The software component may be related to the operating system (includingpatches thereto). In some embodiments, the software components may havea limited time of use. For example, the software components may beadvertising content for movies, events, etc. Accordingly, the datapackage 300 may also include a validity time period. Additionally, thedata package 300 may contain of schedule of use for the advertisingcontent. For example, the advertising content is to only be displayed onthe gaming machine 110 on certain days, certain times of the day, etc.

In some embodiments, the software components may be the reel symbols tobe displayed on the reels of the gaming machine 110. These reel symbolsmay or may not have a limited time of use, schedule, etc. In sonicembodiments, the software component may be a new configuration download.For example, the new configuration may modify the denominations on thegaming machine 110. To illustrate, the denomination may be increasedfrom 7pm-11pm nightly and then decreased after such time.

In some embodiments, the software components 302A-302N may berepresentative of executable applications. Alternatively, the softwarecomponents 302A-302N may be representative of source code that may becompiled on the gaming machine 110 prior to execution. Accordingly, thegaming machine 110 may include a compiler for compilation of such sourcecode prior to execution.

The data package 300 may also include a list of dependencies 304. Thelist of dependencies 304 includes those components that the softwarecomponents 302A-302N are dependent. Each of the software components 302may have a separate list of dependencies. In some embodiments, one ofthe software components 302 may be dependent on one of the othersoftware components 302. The list of dependencies 304 may include aparticular version or range of versions of a given dependency from whichthe software component 302 depends. For example, a particular softwarecomponent 302 may be dependent on a version 2.5 or greater, a version2.0 or lesser, versions in the range of 2.5-3.5, etc. In someembodiments, the dependencies may be other software components, hardwarecomponents, etc, For example, the dependency may be that the memory isrequired to be of a given size or greater.

The data package 300 may also include a pre-installation script(s) 306and a post-installation script(s) 308. The pre-installation script(s)306 and the post-installation script(s) 308 may include one or moreinstructions that are to be executed prior to and subsequent to theinstallation of the software component 302, respectively. For example,instructions in the pre-installation script(s) 306 may verify or createparticular directory structures or move file(s) to backup locations.Other instructions in the pre-installation script(s) 306 may tog out orcash out a player of the gaming machine 110. Other instructions in thepre-installation script(s)) 306 may cause the gaming machine 110 to moveto an out-of-service state. Other instructions in the pre-installationscript(s)) 306 may initiate a logging to track the operations of theinstallation.

Instructions in the post-installation script(s)) 308 may includeinstructions to retrieve licenses for the software component 302. Forexample, the instructions in the post-installation script(s)) 308 mayretrieve a license key from the master game server 202, which allows forexecution of the application. Other instructions in thepost-installation script(s)) 308 may include instructions to delete aprevious version of an application, move the application to aperipheral, notify the master game server 102 of successful completion,etc. Other instructions in the post-installation script(s)) 308 mayinclude instructions to update boot scripts, reboot the gaming machine110, notify active applications of the installation, remove initiationof the previous version, etc.

FIG. 4 illustrates a data structure of installed software stored in thegaming machine, according to some embodiments of the invention. Inparticular, a table 400 includes a list of software that is installedand/or stored on the gaming machine 110. The table 400 may berepresentative of the table of software 210.

The table 400 includes a column 402 that includes an identification ofthe software. The table 400 also includes a column 404 that includes aversion of the software and a column 406 that includes theinstallation/storage date of the software. As further described below,the table 400 may be used to verify that a given version or range ofversions of a dependency for a given software component are on thegaming machine 110, prior to installation of the software component.

FIG. 5 illustrates a computer device that executes software forperforming operations related to dependency verification, according tosome embodiments of the invention. In particular, FIG. 5 illustrates acomputer system 500 that may execute the modules shown in FIG. 2.

As illustrated in FIG. 5, the computer system 500 comprises processor(s)502. The computer system 500 also includes a memory unit 530, processorbus 522, and Input/Output controller hub (ICH) 524. The processor(s)502, memory unit 530, and ICH 524 are coupled to the processor bus 522.The processor(s) 502 may comprise any suitable processor architecture,The computer system 500 may comprise one, two, three, or moreprocessors, any of which may execute a set of instructions in accordancewith embodiments of the invention.

The memory unit 530 may store data and/or instructions, and may compriseany suitable memory, such as a dynamic random access memory (DRAM). Thecomputer system 500 also includes IDE drive(s) 508 and/or other suitablestorage devices. A graphics controller 504 controls the display ofinformation on a display device 506, according to some embodiments ofthe invention.

The input/output controller hub (ICH) 524 provides an interface to I/Odevices or peripheral components for the computer system 500. The ICH524 may comprise any suitable interface controller to provide for anysuitable communication link to the processor(s) 502, memory unit 530and/or to arty suitable device or component in communication with theICH 524. For one embodiment of the invention, the ICH 524 providessuitable arbitration and buffering for each interface.

For some embodiments of the invention, the ICH 524 provides an interfaceto one or more suitable integrated drive electronics (IDE) drives 508,such as a hard disk drive (HDD) or compact disc read only memory (CDROM) drive, or to suitable universal serial bus (USB) devices throughone or more USB ports 510. For one embodiment, the ICH 524 also providesan interface to a keyboard 512, a mouse 514, a CD-ROM drive 518, one ormore suitable devices through one or more firewire ports 516. For oneembodiment of the invention, the ICH 524 also provides a networkinterface 520 though which the computer system 500 can communicate withother computers and/or devices.

In some embodiments, the computer system 500 may be employed as themaster game server 102, the download manager 108, or the gaming machine110. In some embodiments, the computer system 500 includes amachine-readable medium that stores a set of instructions (e.g.,software) embodying any one, or all, of the methodologies for dependencyverification for distributed gaming content described herein.Furthermore, software may, reside, completely or at least partially,within memory unit 530 and/or within the processor(s) 502.

While FIG. 5 describes a computer system that may be used in conjunctionwith embodiments of the invention, FIG. 6 describes embodiments of agaming machine that may be used with embodiments of the invention.

FIG. 6 is a perspective view of a gaming machine, according to exemplaryembodiments of the invention. As shown in FIG. 6, the gaming machine 600can be a computerized slot machine having the controls, displays, andfeatures of a conventional slot machine.

The gaming machine 600 can be operated while players are standing orseated. Additionally, the gaming machine 600 is preferably mounted on astand (not shown). However, it should be appreciated that the gamingmachine 600 can be constructed as a pub-style tabletop game (not shown),which a player can operate while sitting. The gaming machine 600 mayalso be in the form of a handheld device. For example, the gamingmachine 600 may be part of a Personal Digital Assistant (PDA), cellulartelephone, etc. Furthermore, the gaming machine 600 can be constructedwith varying cabinet and display designs. The gaining machine 600 canincorporate any primary game such as slots, poker, or keno, andadditional bonus round games. The symbols and indicia used on and in thegaining machine 600 can take mechanical, electrical, or video form.

As illustrated in FIG. 6, the gaming machine 600 includes a coin slot602 and bill acceptor 624. Players can place coins in the coin slot 602and paper money or ticket vouchers in the bill acceptor 624. Otherdevices can be used for accepting payment, For example, credit/debitcard readers/validators can be used for accepting payment. Additionally,the gaming machine 600 can perform electronic funds transfers andfinancial transfers to procure monies from financial accounts. When aplayer inserts money in the gaming machine 600, a number of creditscorresponding to the amount deposited are shown in a credit display 606.After depositing the appropriate amount of money, a player can beginplaying the game by pushing play button 608. The play button 608 can beany play activator used for starting a wagering game or sequence ofevents in the gaming machine 600.

As shown in FIG. 6, the gaming machine 600 also includes abet display612 and a “bet one” button 616. The player places a bet by pushing thebet one button 616. The player can increase the bet by one credit eachtime the player pushes the bet one button 616. When the player pushesthe bet one button 616, the number of credits shown in the creditdisplay 606 decreases by one credit, while the number of credits shownin the bet display 612 increases by one credit.

A player may “cash out” by pressing a cash out button 618. When a playercashes out, the gaming machine 600 dispenses a voucher or currencycorresponding to the number of remaining credits. The gaming machine 600may employ other payout mechanisms such as credit slips (which areredeemable by a cashier) or electronically recordable cards (which trackplayer credits), or electronic funds transfer.

The gaming machine also includes a primary display unit 604 and asecondary display unit 610 (also known as a “top box”). The gamingmachine may also include an auxiliary video display 640. In oneembodiment, the primary display unit 604 displays a plurality of videoreels 620. According to embodiments of the invention, the display units604 and 610 can include any visual representation or exhibition,including moving physical Objects (e.g., mechanical reels and wheels),dynamic lighting, and video images. In one embodiment, each reel 620includes a plurality of symbols such as bells, hearts, fruits, numbers,letters, bars or other images, which correspond to a theme associatedwith the gaming machine 600. Furthermore, as shown in FIG. 6, the gamingmachine 600 includes an audio presentation unit 628. The audiopresentation unit 628 can include audio speakers or other suitable soundprojection devices.

In one embodiment, a plurality of gaming machines can be connected to aplurality of download managers in a gaming network. In the gamingnetwork, the gaming machines can receive data packages, as describedherein. Additionally, the gaming machines can conduct casino stylewagering games based on the gaming content.

System Operations

This section describes operations performed by embodiments of theinvention. In certain embodiments, the operations are performed byinstructions residing on machine-readable media (e.g., software), whilein other embodiments, the methods are performed by hardware or otherlogic (e.g., digital logic).

In this section, FIGS. 7-10 are discussed. In particular, FIG. 7describes operations for distributing a data package that includesdependency verification. FIG. 8-9 describes operations (that includesdependency verification) for processing distributed gaming content for adata package having one or more software components. FIG. 10 describesoperations (that includes dependency verification) enabling a player ofa gaming machine to update software components therein. FIG. 11describes operations verification of hardware in the gaming machineprior to downloading of updates.

The system operations are described relative to downloads to a gamingmachine. However, embodiments are not so limited. For example, thedownload may be from the master game server 102 to one of the downloadmanagers 108. In some embodiments, the download may be from a remoteserver (such as one that is off-site from a casino) to a contentrepository (such as the gaming and licensing content store 104). Thisdescription proceeds with a discussion of FIG. 7.

FIG. 7 illustrates a flow diagram for operations for distributing a datapackage that includes dependency verification, according to someembodiments of the invention. FIG. 7 illustrates operations that may beexecuted by the master game server 102. The operations provide for theprocessing of inventory updates for one or more gaming machines 110.

The flow diagram 700 will be described with reference to FIGS. 1-4. Theflow diagram 700 illustrates two different techniques for initiating theoperations therein. Accordingly, two paths are illustrated. A first path(block 702) may be initiated by one of the download managers 108 or oneof the gaming machines 110. A second path (block 704 and block 706) maybe initiated by the master game server 102 on which such operations areexecuted. The flow diagram 700 commences at block 702 or at block 704.

At block 702, an inventory update request is received from a gamingmachine or a download manager. In some embodiments, the master gameserver 102 receives this inventory update request from one of the gamingmachines 110 or one of the download manager 108. For example,periodically (e.g., daily, weekly, monthly, etc.), this inventory updaterequest is received to ensure that the gaming machine 110 and/orperipherals attached thereto have the latest updates of the softwarecomponents therein. In some embodiments, the inventory update requestmay include a list of some or all software components on the gamingmachine 110 and/or peripheral, a particular software component on thegaming machine 110 and/or peripheral, etc. The inventory update requestmay also include the current version of the software components, date ofinstallation, etc. For example, in some embodiments, the list mayinclude the entries in the table 400 (shown in FIG. 4). In someembodiments, the list of inventory may also include the type of hardware(type of processor, size of memory, the amount of available space on thehard drive for new applications, the types of peripherals, the physicaltype of the gaming machine, etc.). The list of inventory may alsoinclude the list of players that have played the gaming machine 110 fora particular time period (since the game has been put into operation,for the last month, etc.). The list of inventory may also include thenumber of times that a given game has been played on the gaming machine110 for a particular time period (since the game has been put intooperation, for the last month, etc.), The flow continues at block 708,which is described in more detail below.

At block 704, an inventory management request is transmitted to a gamingmachine. In some embodiments, the master game server 102 transmits theinventory management request to one or more of the gaming machine 110.Similar to the operations at block 702, the inventory management requestmay be transmitted periodically to ensure that the gaming machines 110have the latest updates of the software components therein. Theinventory management request may include a request for information forall, some or one software component(s) on the gaming machine 110 orperipherals attached thereto. The master game server 102 may transmitthe inventory management request for all gaming machines 110 coupled tothe network 106, for all or part of the gaming machines 110 for aparticular download manager 108, for all or part of the gaming machines110 for a group of download managers 108, etc. The flow continues atblock 706.

At block 706, a list of inventory of the gaming machine is received. Insome embodiments, the master game server 102 receives this list backfrom the download managers 108 and/or the gaming machines 110. Similarto the operations at Hock 702, the list may include the entries in thetable 400 (shown in FIG. 4). The flow continues at block 708.

At block 708, a determination is made of whether updates to theinventory are needed. In some embodiments, the master game server 102makes this determination. The master game server 102 may compare thelist of inventory received to its list of software components (includingthe latest versions). The master game server 102 may retrieve its listfrom the gaming and licensing content store 104. In some embodiments,the master game server 102 may determine that updates are needed foreach software component in which there is a newer version. In someembodiments, the master game server 102 may determine whether anattribute of the hardware in the gaming machine satisfies the minimumhardware requirements in order to execute the updates. For example, adetermination may be made if a particular game is to be updated thatrequires a minimum amount of memory, a minimum speed of the processor, aminimum amount of storage, etc. A more detailed description ofoperations for determining whether such minimum hardware requirementsare satisfied, according to some embodiments, are set forth below (seedescription of FIG. 11). If there are updates to the inventory, the flowcontinues at block 710. Otherwise, the flow continues at block 712.

At block 710, updates are transmitted to the gaming machine in one ormore data packages. In some embodiments, the master game server 102transmits the software components in one or more data packages 300(shown in FIG. 3). Therefore, the master game server 102 may include alist of dependencies for a particular software component,pre-installation scripts and post-installation scripts. As describedabove, in some embodiments, the master game server 102 received the listof all software components on the gaming machine 110 and the peripheralsattached thereto. Accordingly, if a particular software component thatis being updated needs a version of another software component (that isnot on the gaming machine 1110), the master game server 102 may includethis version of the dependent software component in one of the datapackages. In some embodiments, the master game server 102 transmits thesoftware components in an order based on dependencies. For example, ifsoftware component A is dependent on software component B (both of whichneeded to be updated), the master game server 102 includes the softwarecomponent B in a same or earlier data package as software component A.The flow continues at block 712.

At block 712, a determination is made of whether other application(s)may be stored in the gaming machine based on the inventory management.In some embodiments, the master game server 102 may make thisdetermination. For example, the master game server 102 may make thedetermination that additional games are to be added based any of anumber of different criteria. The master game server 102 may determinethat games X, Y and Z are to be added based on the amount of hard drivespace available, the physical type of the gaming machine, the types ofplayers that typically play the gaming machine 110. For example, if themost played game on the gaming machine 110 for a given time period isgame B and if market research has determined that players of game B alsoplay game F, the master game server 102 may determine to store game Fonto the gaming machine 110. In some embodiments, the master game server102 may determine whether the hardware in the gaming machine satisfiesthe minimum hardware requirements in order to execute the otherapplication(s) (see description of block 704 above). If there are otherapplications to be stored on the gaming machine 110, the flow continuesat block 714. Otherwise, the operations of the flow diagram 700 arecomplete.

At block 714, a list of the other application(s) that may be stored onthe gaming machine are transmitted to the gaming machine 110. In someembodiments, the master game server 102 transmits this list to thegaming machine 110. As further described below, the gaming machine 110may request a download of the new applications from the master gameserver 102. The download of the new applications may include dependencyverification (as described in FIGS. 8-9 below). The operations of theflow diagram 700 are complete.

The operations of dependency verification are now described for gamingcontent (e.g., software components) downloaded into the gaming machine110. In particular, FIG. 8 illustrates a flow diagram for operations fordependency verification for distributed gaming content, according tosome embodiments of the invention. The flow diagram 800 will bedescribed with reference to FIGS. 1-4. While the flow diagram 800describes dependency verification relative to the gaming machine 110,such operations are applicable to dependency verification forperipherals of the gaming machine 110, The flow diagram 800 commences atblock 802.

At block 802, a data package is received over a network and into agaming machine. For example, the gaming machine 110 receives a datapackage from the master game server 100 over the network 106. In someembodiments, the gaming machine 110 may receive the data package basedon an inventory update request or inventory management request (asdescribed in the flow diagram 700 of FIG. 7). The gaming machine 110 mayalso receive the data package based on a request that is initiated by aplayer of the gaming machine 110. Examples of such operations areillustrated in FIG. 10, which is described in more detail below.

As described above, the data package may include one or more softwarecomponents that are to be installed in the gaming machine 110 or aperipheral thereof. The data package may also include a list of versionsof dependencies that the software components are dependent. The datapackage may also include a pre-installation script and apost-installation script. In some embodiments, the data package may becompressed, in addition, the data package may be encrypted. Examples ofthe types of encryption may include different types of asymmetric keyand symmetric key encryption. The data package may be encrypted inaccordance with different Data Encryption Standards (DES), the Rivest,Shaman and Adelman (RSA) algorithm, etc. The data package may also bedigitally signed based on a digital signature, public/private key pair,etc. The flow continues at block 804.

At block 804, the data package is stored in a quarantined storage in thegaming machine. For example as shown in FIG. 2, the download module 202may store the data package into the quarantined storage 212 of thestorage device 208. The quarantined storage 212 may be a part of thestorage device that may have limited accessibility (as described above).The flow continues at block 806.

At block 806, a determination is made of whether the data package isauthentic. In some embodiments, the authentication module 204 may makethis determination. The authentication module 204 may authenticatethrough a private/public key pair operation. The authentication module204 may authenticate based on decryption of the data package with thepublic key of the master game server 102 (which encrypted the datapackage with its private key). Authentication may also be based on theuse of a digital signature. The master game server 102 may digitallysign the data package. The authentication module 204 may thenauthenticate based on the digital signature appended to the datapackage.

In some embodiments, the data package may be authenticated based oncertificates from multiple entities. For example, in some embodiments,the data package may include a first digital certificate that is fromthe master game server 102 that authenticates the point of origin of thedata package. The data package may also include a second digitalcertificate that certifies that a regulatory body has approved the datapackage. In some embodiments, the data package may be received from athird party provider. For example, the third party provider may providelocal advertising content, language translation, etc. Accordingly, thedata package may include another digital certificate from the owner ofthe gaming machine 110 that certifies the data package provided by thisprovider. If the data package is not authentic, the flow continues atblock 808. Otherwise, the flow continues at block 810.

At block 808, an authenticity error handling operation is processed. Insome embodiments, the authentication module 204 may process theauthenticity error handling operation. For example, the authenticationmodule 204 may abort the download of the software component, update anerror log that marks information related to the authenticity error,transmit an error message back to the master game server 102, shut downthe gaming machine 110, reboot the gaming machine 110, transmit amessage over the network 106 to the proper regulatory authority, etc.The operations of the flow diagram 800 are then complete.

At block 810, the data package is decompressed. In some embodiments, theauthentication module 204 may decompress the data package. In someembodiments, the data package is first decompressed and thenauthenticated, This order of operation is dependent on the order ofcompression and encryption performed by the master game server 102. Theflow continues at block 812.

At block 812, a determination is made of whether the softwarecomponent(s) in the data package have any dependencies. In someembodiments, the version manager module 206 may make this determination.The version manager module 206 may make this determination based on listof dependencies for the software components that are part of the datapackage (see discussion of FIG. 3 above).

The list of dependencies may include the correct version(s) of a givendependency. If the software component in the data package hasdependencies, the flow continues at block 814. Otherwise, the flowcontinues at block 818.

At block 814, a determination is made of whether the correct version(s)of the dependencies are on the gaining machine. In some embodiments, theversion manager module 206 may make this determination. The versionmanager module 206 may make this determination based on the table 400(shown in FIG. 4) stored on the gaming machine 110. In some embodiments,if the software component is for storage on a peripheral, the table 400may also store data of version(s) of dependencies for such peripherals.Alternatively, a similar data. structure may be stored on the peripheralthat may be retrieved by the version manager module 206. the correctionversion(s) of the dependencies are not stored on the gaming machine 110,the flow continues at block 816. Otherwise, the flow continues at block818.

At block 816, the correct version(s) of the dependencies are retrieved.in some embodiments, the download module 202 may retrieve the correctversion's. The download module 202 may request the correct version(s)from the master game server 102. In some embodiments, if the correctionversion(s) of the dependencies are not stored on the gaming machine 110,a different operation is executed. For example, an error handlingoperation may be executed wherein the operations of the flow diagram 800are aborted (similar to the error handling operations described at block808). Assuming that the retrieval operation is performed, the flowcontinues at block 818.

At block 818, a determination is made of whether the software componentis associated with a pre-installation script (stored in the datapackage). In some embodiments, the install module 207 may make thisdetermination. The install module 207 may make this determination basedon whether a pre-installation script is stored in the data package.there is a pre-installation script for the software component, the flowcontinues at block 820. Otherwise, the flow continues at block 822.

At block 820, the pre-installation script is processed. In someembodiments, the install module 207 may process the pre-installationscript. Examples of the different types of instructions in thepre-installation script are described above in conjunction with thedescription of FIG. 3. The flow continues at block 822.

At block 822, the software component is installed. In some embodiments,the module 207 installs the software component. If the softwarecomponent is a single file, the install module 207 may replace or addthis file in the correct location on the gaming machine 110 orperipherals thereof. If the software component is an entire application,the installation may include the typical operations associatedtherewith. If this is an installation of a newer version of anapplication, this may include the removal of the previous version,overwriting files of the previous version, etc. The installation mayinclude creation of directories, files, updates registries, databasefiles, etc. As part of the pre-installation or the installation, theinstall module 207 may also stop execution of the current version of theapplication.

As part of the pre-installation or the installation, the install module207 may be required to remove other software components because oflimited storage on the gaming machine 110. In some embodiments, theinstall module 207 may remove games based on a number of criteria (suchas the game earning the least, length of time on the gaming machine,least time played, etc.).

In some embodiments, certain games may not be deleted for a given time.For example, regulations may include that a history of the last 50 playsare to be stored. In some embodiments, the games are required to bestored on the gaming machine 110 to maintain this history. Accordingly,a game may not be deleted until such game is no longer part of the last50 plays on the gaming machine 110. If this game is required to bedeleted in order to install the new software component, in someembodiments, the installation would fail. In some embodiments, aninstallation may fail if a game is required to be deleted in order toperform the installation.

The games installed on the gaming machine 110 may have expiration dates.Accordingly, the games are no longer playable after a given date. Theexpired games may be deleted in a background maintenance operation. Theinstall module 207 may perform such operations periodically.

The installation may be interrupted by a loss of power. Accordingly,recordations in a log stored on the gaming machine 110 indicate that aninstallation is initiated and an installation is completed. If aninstallation is initiated and not completed, the installation may berestarted or completed after power is restored. In some embodiments,part of the power-up of the gaming machine 110 may include a check ofsuch a log to verify that there are no uncompleted installations. Theflow continues at block 824.

At block 824, a determination is made of whether the installation of thesoftware component was successful. In some embodiments, the installmodule 207 may make this determination. The install module 207 may makethis determination based on a number of criteria. The install module 207may verify that all of the operations (e.g., creation of directorystructures/files, updates to existing files (registries)) that are partof the installation were performed, The install module 207 may alsoverify based on one or more tests on the gaming machine 110 to verifythat the software component is executing properly. If the installationwas successful, the flow continues at block 826. Otherwise, the flowcontinues at block 830.

At block 826, a determination is made of whether the software componentis associated with a post-installation script (stored in the datapackage). In some embodiments, the install module 207 may make thisdetermination. The install module 207 may make this determination basedon whether a post-installation script is stored in the data package. Ifthere is a post-installation script for the software component, the flowcontinues at block 828. Otherwise, the operations of the flow diagram800 are complete.

At block 828, the post-installation script is processed. in someembodiments, the install module 207 may process the post-installationscript. Examples of the different types of instructions in thepost-installation script are described above in conjunction with thedescription of FIG. 3. The operations of the flow diagram 800 arecomplete.

At block 830, an installation error handling operation is processed. Insome embodiments, the install module 207 may process the install errorhandling operation. For example, the install module 207 may revert backto the previous version. The install module 207 may undo the operationsperformed based on the pre-installation script. For example, the installmodule 207 may delete directory structures/files that werecreated/modified, etc. The install module 207 may update an error log,transmit an error message back to the master game server 102, shut downthe gaming machine 110, reboot the gaming machine 110, transmit amessage over the network 106 to the proper regulatory authority, etc.The operations of the flow diagram 800 are then complete.

In some embodiments, more than one software component may be store inthe data package received from the master game server 102. If the datapackage includes more than one software component, operations may beexecuted to account for situations wherein one software component in thedata package is dependent on a different software package in the samedata package. The operations of dependency verification for multiplesoftware components in a same data package are now described. Inparticular, FIG. 9 illustrates a flow diagram for dependencyverification for distributed gaming content for data packages havingmultiple software components, according to some embodiments of theinvention. The flow diagram 900 will be described with reference toFIGS. 1-4. The flow diagram 900 describes dependency verificationrelative to the gaming machine 110, such operations are applicable todependency verification for peripherals of the gaming machine 110. Theflow diagram 900 commences at block 902.

At block 902, a data package is received over a network and into againing machine. For example, the gaming machine 110 receives a datapackage from the master game server 100 over the network 106. In someembodiments, the gaming machine 110 may receive the data package basedon an inventory update request or inventory management request (asdescribed in the flow diagram 700 of FIG. 7). The gaming machine 110 mayalso receive the data package based on a request that is initiated by aplayer of the gaming machine 110. Examples of such operations areillustrated in FIG. 10, which is described in more detail below.

For the operations of the flow diagram 900, the data package includesmore than one software component. A software component in the datapackage may or may not dependent on another software component therein.The data package may include a list of dependences, a pre-installationscript and a post-installation script for each of the softwarecomponents therein. As described in the flow diagram 800 of FIG. 8, thedata package may be compressed, encrypted and/or digitally signed, Theflow continues at block 904.

At block 904, the installation of a current software component in thedata package is processed. In some embodiments, the download module 202,the authentication module 204, the version manager module 206 and theinstall module 207 process this installation. The process of performingthe installation is described above in conjunction with the flow diagram800 of FIG. 8, In particular, the installation may include theoperations at blocks 804-826 of FIG. 8. In some embodiments, the orderof installation may be stored in a log that is part of the data package.The order of installation may be based on the dependencies of thesoftware component stored therein. For example, if software component Ais dependent on software component B, the software component B isinstalled first. The flow continues at block 906.

At block 906, a determination is made of whether other unprocessedsoftware components are in the data package. In some embodiments, theinstall module 207 may make this determination. As further describedbelow, this determination is checked after the processing theinstallation of a current software component. If there are otherunprocessed software components in the data package, the flow continuesat block 908. Otherwise, the operations of the flow diagram 900 arecomplete.

At block 908, a determination is made of whether the installation of thecurrent software component was successful. In some embodiments, theinstall module 207 may make this determination. The install module 207may make this determination based on a number of criteria. The installmodule 207 may verify that all of the operations (e.g., creation ofdirectory structures/files, updates to existing files (registries)) thatare part of the installation were performed. The install module 207 mayalso verify based on one or more tests on the gaming machine 110 toverify that the software component is executing properly. If theinstallation of the current software product was not successful, theflow continues at block 910. Otherwise, the flow continues at block 912.

At block 910, a pre-install terminate operation is performed on anysoftware components in the data package that are dependent on thecurrent software component. In some embodiments, the install module 207may perform this operation. As part of the operation, the install module207 marks any of these software components in the data package ascomponents that are not to be installed. The install module 207 may alsoupdate a log that is stored on the gaming machine 110 to indicate thetermination. The install module 207 may also transmit an error messageback to the master game server 102. The flow continues at block 912.

At block 912, an unprocessed software component that is not terminatedis marked as the current software component. In some embodiments, theinstall module 207 may perform this operation. In some embodiments, thecurrent software component may be moved to its official location. Theinstall module 207 may mark the next software component in the order ofinstallation (as described above)as the current software component. Theflow continues at block 904, where the current software component isprocessed. Accordingly, as described, software components that depend ona software component that did not install properly are not installed.

In some embodiments, software components may be installed onto a gamingmachine 110 based on player input. FIG. 10 illustrates a flow diagramfor installing software components in a gaming machine based on playerinput, according to some embodiments of the invention. The flow diagram1000 will be described with reference to FIGS. 1-4. The flow diagram1000 commences at block 1002.

At block 1002, a list of available games for the gaming machine isdisplayed to the player. In some embodiments, the install module 207causes the list to be displayed on a display of the gaming machine 110.In some embodiments, the order of the list may be based on the personplaying the game (via a tracking card). For example, if a playertypically plays games A, B and C and is currently playing game C, thetop of the list includes games A and B. Also, the order of the list maybe such that similar games to the current game being played aredisplayed first. The order of the list may be such that games that havenot been played for the longest period of time are displayed first. Insome embodiments, the games listed may or may not be stored on thegaming machine 110. For example, the list may include all games that maybe played on a given gaming machine based on its configuration(independent of whether the game is stored on the gaming machine 110).The flow continues at block 1002.

At block 1004, a request is received from a player to change from acurrent game to a new game (from the list) on the gaming machine. Insome embodiments, the install module 207 may receive this request. Forexample, the player may select a different game from the list based onany of a number of different types of user inputs (e.g., buttons). Theflow continues at block 1006.

At block 1006, a determination is made of whether the player isqualified to change the game. In some embodiments, the install module207 may make this determination. The player qualification may be basedon one or more criteria. In some embodiments, the player qualificationis based on whether a given number of gaming credits (one, 10, 100,etc.) are on the gaming machine 110, In some embodiments, a player isqualified based on their status on their tracking card that is insertedinto the gaming machine 110. For example, only “gold club” players arequalified. In some embodiments, a player is charged for changing thegame, For example, one or more gaming credits are charged for thechange. In some embodiments, a player is charged if the game is requiredto be downloaded into the gaming machine 110. In some embodiments, anyplayer may be allowed to change the game, but is charged for a change.Alternatively, certain players are not charged based on their status ontheir tracking card. If the player is qualified, the flow continues atblock 1008. Otherwise, the operations of the flow diagram 1000 arecomplete.

At block 1008, a determination is made of whether the new game is storedon the gaming machine. In some embodiments, the version manager module206 may make this determination. The version manager module 206 may makethis determination based on the table 400 (shown in FIG. 4) that isstored in the gaming machine 110. If the new game is not stored on thegaming machine, the flow continues at block 1010. Otherwise, the flowcontinues at block 1012.

At block 1010, the new game is retrieved from the master game server. Insome embodiments, the download module 202 may retrieve the new game fromthe master game server 102. The master game server 102 may transmit thenew game in one or more data packages (as described in the flow diagram800 of FIG. 8). The flow continues at block 1012.

At block 1012, installation of the new game is processed. In someembodiments, the download module 202, the authentication module 204, theversion manager module 206 and the install module 207 process thisinstallation. The process of performing the installation is describedabove in conjunction with the flow diagram 800 of FIG. 8. The operationsof the flow diagram 1000 are complete.

At block 1014, installation of the new game is processed based on thelocally stored data. The install module 207 may process thisinstallation. The version manager module 206 may or may not performdependency verification as part of the installation of the new game. Forexample, it may be assumed that because the new game is already locallystored that the dependencies of such game have been verified.Alternatively, the version manager module 206 may determine dependenciesof the new game based on locally stored data in the gaming machine 110and/or data retrieved from the master game server 102. Accordingly, theversion manager module 206 may cause the retrieval of dependencies fromthe master game server 102 if such dependencies are not on the gamingmachine 110. The master game server 102 may transmit these dependenciesin one or more data packages (as described in the flow diagram 800 ofFIG. 8).

In some embodiments, the processing of the installation (at block 1012and/or block 1014) may be terminated based on certain player activity.For example, if the player cashes out, the installation is terminated.Alternatively, if the player cashes out and does not return to playafter a given time period one minute, five minutes, etc.), theinstallation is terminated. Accordingly, the version manager module 206may reinstall the previous game as part of this termination).

In some embodiments, the hardware in the gaming machine is verified todetermine whether an attribute of such hardware satisfies the minimumhardware requirements in order to execute the updates downloaded fromthe master game server 102. FIG. 11 illustrates a flow diagram forverification of hardware in the gaming machine prior to downloading ofupdates thereto, according to some embodiments of the invention. Theflow diagram 1100 will be described with reference to FIGS. 1-4. Theflow diagram 1100 commences at block 1102.

At block 1102, a hardware inventory management request is transmitted tothe gaming machine(s) that are to be upgraded with software. In someembodiments, the master game server 102 transmits the hardware inventorymanagement request to one or more of the gaming machines 110. Withreference to FIG. 7, the hardware inventory management request may bepart of the request transmitted at block 702. For example, the hardwareinventory management request could include the type of gaming machine,the peripherals on the gaming machines 110, the amount of memory, thespeed of the processor, the size of the storage device (includingavailable space), etc. The master game server 102 may transmit thisrequest to only those gaming machines 110 that are designated to haveupgrades to software therein. For example, certain gaming machines 110may be designated to receive a new game, a new operating system, etc. Insome embodiments, the master game server 102 may transmit this requestto all gaming machines 110 coupled to the network 106, to all or part ofthe gaming machines 110 for a particular download manager 108, for allor part of the gaming machines 110 for a group of download managers 108,etc. The flow continues at block 1104.

At block 1104, a list of the hardware inventory of the gaming machine(s)is received. In some embodiments, the master game server 102 receivesthis list back from the download managers 108 and/or the gaming machines110. The flow continues at block 1106.

At block 1106, a determination is made of whether an attribute of thehardware on the gaming machine(s) to be upgraded satisfy the minimumhardware requirement for the updates. in some embodiments, the mastergame server 102 may make this determination. In particular, the updatesto be downloaded may include requirements stored as part of the update.For example, the update (such as a new game, new operating system) mayrequire a minimum amount of memory, a particular type of peripheral forthe gaming machine, a certain type of gaming machine, etc. Accordingly,the master game server 102 may compare the hardware inventory receivedback from the request to the minimum hardware requirements for theupdate. If the hardware on the gaming machine(s) satisfies the minimumhardware requirement, the flow continues at block 1108. Otherwise, theflow continues at block 1110 (which is described in more detail below).

At block 1108, updates to the software on the gaming machine(s) to beupgraded are performed. In some embodiments, the master game server 102may perform this update. In some embodiments, the master game server 102may perform the update using one or more data packages 300 (shown inFIG. 3). For further description, see the description of the operationsat block 710 of FIG. 7). The operations of the flow diagram 1100 arethen complete.

At block 1110, a determination is made of whether other gaming machinessatisfy the minimum hardware requirements for the update. In someembodiments, the master game server 102 may make this determination. Theattributes of the hardware may be available to the master game server102 from the current and/or previous inventory requests. For example,the master game server 102 may have the attributes of all of the gamingmachines at a given site. If other gaming machines do not includehardware that satisfy the minimum hardware requirement, the operationsof the flow diagram 1100 are then complete. Otherwise, the flowcontinues at block 1114.

At block 1114, updates to the software on the other acceptable gamingmachine(s) that satisfy the minimum hardware requirement are performed.In some embodiments, the master game server 102 may perform this update.The determination of which other gaming machines are acceptable may bemade by the master game server 102 and/or operator thereof. Inparticular, the master game server 102 may have the option of which ofthe other gaming machines to update. This option may be automated and/orpresented to an operator to make the determination. The determinationmay be based on a number of factors, For example, the locations of theother gaming machine(s) in the operating environment (e.g., a casino),the locations of the other gaming machine(s) relative to other gamingmachines in the operating environment, the current games being executedon the other gaming machines, etc. may be factors in the determination.Accordingly, none or less than all of the gaming machines to be upgradedmay receive the updates. In sonic embodiments, the master game server102 may perform the update using one or more data packages 300 (shown inFIG. 3). For further description, see the description of the operationsat block 710 of FIG. 7). The operations of the flow diagram 1100 arethen complete.

In some embodiments for the flow diagram 1100, after a determination ismade that one or more gaming machines do not satisfy the hardwarerequirement, an operator may update the hardware to satisfy therequirement. Subsequently, the updates can then be made to these gainingmachines.

General

In this description, numerous specific details are set forth. However,it is understood that embodiments of the invention may be practicedwithout these specific details. in other instances, well-known circuits,structures and techniques have not been shown in detail in order not toobscure the understanding of this description. Note that in thisdescription, references to “one embodiment” or “an embodiment” mean thatthe feature being referred to is included in at least one embodiment ofthe invention. Further, separate references to “one embodiment” in thisdescription do not necessarily refer to the same embodiment; however,neither are such embodiments mutually exclusive, unless so stated andexcept as will be readily apparent to those of ordinary skill in theart. Thus, the present invention can include any variety of combinationsand/or integrations of the embodiments described herein, Each claim, asmay be amended, constitutes an embodiment of the invention, incorporatedby reference into the detailed description. Moreover, in thisdescription, the phrase “exemplary embodiment” means that the embodimentbeing referred to serves as an example or illustration.

Herein, block diagrams illustrate exemplary embodiments of theinvention. Also herein, flow diagrams illustrate operations of theexemplary embodiments of the invention. The operations of the flowdiagrams are described with reference to the exemplary embodiments shownin the block diagrams. However, it should be understood that theoperations of the flow diagrams could be performed by embodiments of theinvention other than those discussed with reference to the blockdiagrams, and embodiments discussed with references to the blockdiagrams could perform operations different than those discussed withreference to the flow diagrams. Additionally, some embodiments may notperform all the operations shown in a flow diagram. Moreover, it shouldbe understood that although the flow diagrams depict serial operations,certain embodiments could perform certain of those operations inparallel.

1. A machine-readable, non-transitory medium including instructionswhich, when executed by one or more processors of a gaming machine,cause the gaming machine to perform a method comprising: receiving, viaa network interface, one or more source code components, at least one ofthe one or more source code components including gaming content utilizedin with a wagering game; compiling, via at least one of the one or moreprocessors, the one or more source code components into at least oneexecutable file; and executing, via at least one of the one or moreprocessors, the at least one executable file to initiate installation ofthe gaming content on the gaming machine.
 2. The machine-readable mediumof claim 1, wherein the instructions further cause the gaming machineto: receive, via one or more input devices, an input from a playerindicative of a selection of the wagering game; and terminate theinitiated installation in response to one or more designated playeractivities.
 3. The machine-readable medium of claim 1, wherein theinstructions further cause the gaming machine to: receive, via one ormore input devices, an input from a player indicative of a selection ofthe wagering game; terminate the initiated installation and reinstall apreviously installed wagering game on the gaming machine, in response toone or more designated player activities.
 4. The machine-readable mediumof claim 1, wherein the one or more source code components include atleast an exemplary version of a software component, the exemplaryversion of the software component depending on an existing or previousinstallation of a different version of the software component, andwherein the instructions further cause the gaming machine to: verifythat the gaming machine includes the different version of the softwarecomponent; and in response to at least the verifying, install theexemplary version of the software component on the gaming machine. 5.The machine-readable medium of claim 1, wherein the one or more sourcecode components are received in an encrypted data file that is digitallysigned by a master game server, and wherein the instructions furthercause the gaming machine to authenticate the encrypted data packagebased on the digital signature appended to the encrypted data file.
 6. Agaming machine configured to conduct one or more wagering games, thegaming machine comprising: a network interface connected to acommunications network; one or more processors, and one or more memorydevices storing executable instructions that, when executed by at leastone of the one or more processors, cause the at least one processor tooperate with the network interface and the one or more memory devicesto: receive, via the communications network, one or more source codecomponents, at least one of the one or more source code componentsincluding gaming content utilized in a wagering game; compile the one ormore source code components into at least one executable file; andexecute the at least one executable file to initiate installation of thegaming content on the gaming machine.
 7. The gaming machine of claim 6,wherein the instructions further cause the gaming machine to: receive,via one or more input devices, an input from a player indicative of aselection of the wagering game, and terminate the initiated installationin response to one or more designated player activities.
 8. The gamingmachine of claim 6, wherein the instructions further cause the gamingmachine to: receive, via one or more input devices, an input from aplayer indicative of a selection of the wagering game; and terminate theinitiated installation in response to at least one of the player cashingout and the player failing to provide further input to the gamingmachine within a predetermined time period.
 9. The gaming machine ofclaim 6, wherein the instructions further cause the gaming machine to:receive, via one or more input devices, an input from a playerindicative of a selection of the wagering game; terminate the initiatedinstallation and reinstall a previously installed wagering game on thegaming machine, in response to one or more designated player activities.10. The gaming machine of claim 6, wherein the one or more source codecomponents includes at least an exemplary version of a softwarecomponent, the exemplary version of the software component depending onan existing or previous installation of a different version of thesoftware component, and wherein the instructions further cause thegaming machine to: verify that the gaming machine includes the differentversion of the software component; and in response to at least theverifying, install the exemplary version of the software component onthe gaming machine.
 11. A computer-implemented method of installinggaming content in a gaming machine, the gaming machine including anetwork interface, one or more processors, and one or more memorydevices storing executable instructions, the method comprising:receiving, via the network interface, one or more source codecomponents, at least one of the one or more source code componentsincluding gaming content utilized in a wagering game; compiling, via theexecutable instructions, the one or more source code components into atleast one executable file; executing, via at least one of the one ormore processors, the at least one executable file to initiateinstallation of the gaming content on the gaming machine.
 12. The methodof claim 11, wherein the one or more source code components include atleast an exemplary version of a software component, the exemplaryversion of the software component depending on an existing or previousinstallation of a different version of the software component, themethod further comprising: verifying that the gaming machine includesthe different version of the software component; and in response to atleast the verifying, installing the exemplary version of the softwarecomponent on the gaming machine.
 13. The method of claim 11, wherein thegaming machine further includes one or more input devices, the methodfurther comprising: receiving, via at least one of the one or more inputdevices, an input from a player indicative of a selection of thewagering game; and terminating, via at least one of the one or moreprocessors, the initiated installation in response to one or moredesignated player activities.
 14. The method of claim 11, wherein thegaming machine further includes one or more input devices, the methodfurther comprising: receiving, via at least one of the one or more inputdevices, an input from a player indicative of a selection of thewagering game; and terminating, via at least one of the one or moreprocessors, the initiated installation in response to at least one ofthe player cashing out and the player failing to provide further inputto the gaming machine within a predetermined time period.
 15. The methodof claim 11, wherein the gaming machine further includes one or moreinput devices, the method further comprising: receiving, via at leastone of the one or more input devices, an input from a player indicativeof a selection of the wagering game; terminating, via at least one ofthe one or more processors, the initiated installation and reinstallinga previously installed wagering game on the gaming machine, in responseto one or more designated player activities.
 16. The method of claim 11,further comprising receiving an encrypted data package including the oneor more source code components and decrypting the data package using akey encryption operation.
 17. The method of claim 11, furthercomprising: receiving an encrypted data package including the one ormore source code components, wherein the encrypted data package isaccompanied by a digital signature; authenticating the encrypted datapackage via the digital signature; and decrypting the encrypted datapackage using a key encryption operation.
 18. The method of claim 17,wherein the encrypted data package is authenticated by decrypting theencrypted data package with a public key of a private/public key pair.19. A computer-implemented method of installing gaming contenttransmitted over a communications network into a plurality of remotelyconnected gaming machines, each gaming machine of the pluralityincluding a network interface, one or more processors, and one or morememory devices storing executable instructions, the method comprising:receiving, via each gaming machine's network interface, a data packageincluding one or more source code components, at least one of the one ormore source code components including gaming content utilized in awagering game; compiling, via each gaming machine's stored instructions,the one or more source code components from the data package into one ormore respective executable files, and executing, via at least one ofeach gaming machine's one or more processors, the one or more respectiveexecutable files to initiate installation of the gaming content on eachgaming machine.
 20. The method of claim 19, wherein the data package istransmitted to each gaming machine of the gaining system by a gameserver residing on the communications network.
 21. The method of claim20, wherein the game server is part of the gaming system.
 22. The methodof claim 20, wherein the plurality of gaming machines includes a firstgaming machine running a first operating system and a second gamingmachine running a second, different operating system.
 23. The method ofclaim 22, wherein the first operating system is an updated version ofthe second operating system.
 24. The method of claim 22, wherein thefirst gaming machine is a conventional computerized slot machine and thesecond gaming machine is one of a Personal Digital Assistant (PDA) and acellular telephone.
 25. The method of claim 19, wherein the data packageis an encrypted data package, and wherein each gaming machine's storedinstructions further cause each gaming machine to decrypt the datapackage using a key encryption operation.